const momentService = require("../service/moment.service")

class MomentController {
  async create(ctx, next) {
    // 1.获取请求参数
    const { content } = ctx.request.body

    // 2.获取token中登录的用户信息
    // 动态由于谁发布 token-> id、name
    const { id: user_id } = ctx.user

    // 3.将参数传递给数据库操作中间件,进行数据库操作
    let res = await momentService.create(content, user_id)
    ctx.body = {
      msg: '发表动态成功',
      data: res
    }
  }

  async read(ctx, next) {
    // 获取请求参数
    const { offset, size } = ctx.query

    // 查询数据库
    const res = await momentService.queryList(offset, size)

    ctx.body = {
      msg: '查询动态',
      data: res
    }
  }

  async detail(ctx, next) {
    // 获取请求参数
    const { momentId } = ctx.params

    // 查询数据库
    const res = await momentService.queryDetailById(momentId)

    ctx.body = {
      msg: '查询动态详情请',
      data: res[0]
    }
  }

  async update(ctx, next) {
    // 获取请求参数
    const { momentId } = ctx.params
    const { content } = ctx.request.body

    // 查询数据库
    const res = await momentService.updateContentById(momentId, content)

    ctx.body = {
      msg: '修改某条动态',
      data: res
    }
  }

  async remove(ctx, next) {
    // 获取请求参数
    const { momentId } = ctx.params

    // 查询数据库
    const res = await momentService.deleteContentById(momentId)

    ctx.body = {
      msg: '删除了某条动态',
      data: res
    }
  }

  /**
   * 将给动态添加标签的关系存入moment_lable数据库中
   * @param {*} ctx 
   * @param {*} next 
   */
  async addLables(ctx, next) {
    // 获取请求参数
    const { momentId } = ctx.params
    const lables = ctx.lables

    try {
      // 将lable_id与moment_id传入关系表中
      for (const lable of lables) {
        // 检查插入的数据是否已经存在与关系表中
        const isExists = await momentService.checkMomentLableExists(momentId,lable.id)
        if (!isExists) {
          const res = await momentService.addCommentAndLablesRelation(momentId, lable.id)
        }
      }

      ctx.body = {
        msg: '为动态添加标签成功'
      }
    } catch (error) {
      ctx.body = {
        msg: error
      }
      console.log(error);
    }

  }
}

module.exports = new MomentController()